var iconPicker;
layui.config({
    base: ctx + '/plugin/iconPicker/'
}).use(['iconPicker'], function () {
    iconPicker = layui.iconPicker;
});

layui.config({
    base: ctx + '/plugin/treetable/'
}).extend({
    treetable: '/treetable'
}).use(['table', 'treetable', 'layer', 'form','tree'], function () {
    var form = layui.form;
    var $ = layui.jquery;
    var layer = layui.layer;
    var table = layui.table;
    var tree = layui.tree;
    var treetable = layui.treetable;

    // 新增
    iconPicker.render({
        // 选择器，推荐使用input
        elem: '#iconPicker',
        // 数据类型：fontClass/unicode，推荐使用fontClass
        type: 'fontClass'
    });
    // 修改
    iconPicker.render({
        // 选择器，推荐使用input
        elem: '#edit_iconPicker',
        // 数据类型：fontClass/unicode，推荐使用fontClass
        type: 'fontClass'
    });

    //创建表格
    var createTable = function () {
        // 渲染表格
        layer.load(2);
        treetable.render({
            treeColIndex: 1,
            toolbar : '#toolbar',
            defaultToolbar :[],
            toolbar: '#toolbar',
            height: 600,
            treeSpid: 0,
            treeIdName: 'id',
            treePidName: 'parentId',
            elem: '#acl-table',
            url: ctx + '/rbac/acl/list',
            page: false,
            cols: [[
                {type: 'numbers'},
                {field: 'name', minWidth: 200, title: '权限名称'},
                {field: 'name', minWidth: 120, title: '目录图标',align: 'center' ,templet: function (d){
                        return "<i class='layui-icon "+d.icon+"'></i>";
                }},
                {field: 'url', title: 'url', width: 200,align: 'center'},
                {field: 'aclDesc', title: '权限标识', width: 120,align: 'center'},
                {field: 'seq', width: 80, align: 'center', title: '排序号'},
                {field: 'remark', width: 200, align: 'center', title: '备注'},
                {field: 'operator', width: 120, align: 'center', title: '操作人'},
                {field: 'operateTime', width: 200, align: 'center', title: '操作时间'},
                {
                    field: 'type', width: 80, align: 'center', templet: function (d) {
                        if (d.type == 0) {
                            return '<span class="layui-badge layui-bg-gray">目录</span>';
                        }
                        if (d.type == 1) {
                            return '<span class="layui-badge layui-bg-blue">菜单</span>';
                        } else {
                            return '<span class="layui-badge-rim">权限</span>';
                        }
                    }, title: '类型'
                },
                {templet: '#auth-state', width: 120, align: 'center', title: '操作'}
            ]],
            done: function () {
                layer.closeAll('loading');
            }
        });
    }

    createTable();

    table.on('tool(acl-table)', function (obj) {
        var data = obj.data;
        var layEvent = obj.event;

        if (layEvent === 'del') {
            delAcl(data.id);
        } else if (layEvent === 'edit') {
            edit(data);
        }
    });

    $('#btn-expand').click(function () {
        treetable.expandAll('#auth-table');
    });

    $('#btn-fold').click(function () {
        treetable.foldAll('#auth-table');
    });

    // 删除acl
    function delAcl(id) {
        layer.confirm('确定要删除吗?', function (index) {
            $.ajax({
                url: ctx + "/rbac/acl/delAcl",
                data: {
                    'id': id
                },
                success: function (res) {
                    if (res.success) {
                        layer.msg(res.msg);
                        //刷新权限列表
                        createTable();
                    } else {
                        layer.msg(res.msg);
                    }

                }
            });
            layer.close(index);
        });

    }


    // 编辑acl
    function edit(data) {
        debugger;
        // 回显数据
        form.val('updateFormFilter', {
            'id': data.id,
            'name': data.name,
            'url': data.url,
            'aclDesc': data.aclDesc,
            'seq': data.seq,
            'remark': data.remark,
            'type': data.type,
            'icon' : data.icon
        });
        iconPicker.checkIcon('edit_iconPicker', data.icon);
        // 实现编辑内容展示不同
        if(data.type == 0 ){
            $('#edit_icon').show();
            $('#edit_url').hide();
            $('#edit_aclDesc').hide();
        }else if( data.type == 1){
            $('#edit_icon').show();
            $('#edit_url').show();
            $('#edit_aclDesc').show();
        }else{
            $('#edit_icon').hide();
            $('#edit_url').show();
            $('#edit_aclDesc').show();
        }
        // 下拉框的选择
        layer.open({
            title: '编辑权限',
            type: 1,
           // area: ['400px', '550px'],
            content: $('#updateDialog'),
            btn: ['确定', '取消'],
            yes: function (index, layero) {
                $.ajax({
                    url: ctx + '/rbac/acl/aclUpdate',
                    data: $('#updateFormFilter').serialize(),
                    type : 'post',
                    success: function (res) {
                        if (res.success) {
                            layer.msg(res.msg);
                            layer.close(index);
                            createTable();
                        }
                    }
                });
            },
            btn2: function (index, layero) {
                layer.close(index);
            }
        });
    }

    table.on('toolbar(acl-table)', function (obj) {
        var layEvent = obj.event;
        if (layEvent == 'add') {
            addAcl();
        }
    });

    //新增
    function addAcl(){
        layer.open({
            title : '新增权限信息',
            type: 1,
           // area: ['500px', '600px'],
            content: $('#addAcl')
        });
    }

    var layerIndex ;

    $('#aclSelect').click(function(){
        layerIndex = layer.open({
            title : '选择权限',
            type: 1,
            area: ['400px', '300px'],
            content: $('#uldialog')
        });
    });

    //渲染权限树
    function createUlTree(){
        $.ajax({
            url : ctx+'/rbac/acl/sysMenu',
            success : function(res){
                if(res.success){
                    var nodes = res.data;
                    layui.tree({
                        elem: '#ultree' //传入元素选择器
                        ,nodes: nodes,
                        click : function(data){
                            $('#aclSelect').find('span').html(data.name);
                            $('#parentId').val(data.id);
                            layer.close(layerIndex);
                        }
                    });
                }else{
                    layer.msg(res.msg);
                }

            }
        });
    }
    // 初始化渲染树
    createUlTree();

    // 新增权限
    // 提交新增表单
    form.on('submit(*)', function(data){
        var index = layer.load(2);
        $.ajax({
            url : ctx+'/rbac/acl/aclAdd',
            data : data.field,
            type : 'post',
            success : function(res){
                if(res.success){
                    layer.msg(res.msg);
                    //刷新内容
                    createTable();
                    commons.endTree('ultree');
                    createUlTree();
                    formReset();
                    layer.closeAll();
                }else{
                    layer.msg(res.msg);
                }
            }
        });
        return false;
    });

    // 清空标签的内容
    function formReset(){
        $('#reset').click();
    }

    // 重置按钮配置上清除部门树的功能
    $('#reset').click(function(){
        $('#aclSelect').find('span').html('默认为目录');
    });

    // 新增的时候实现表单内容的切换
    form.on('select(add_select)', function(data){
        if(data.value == 0 ){
            $('#add_icon').show();
            $('#add_url').hide();
            $('#add_aclDesc').hide();
        }else if( data.value == 1){
            $('#add_icon').show();
            $('#add_url').show();
            $('#add_aclDesc').show();
        }else{
            $('#add_icon').hide();
            $('#add_url').show();
            $('#add_aclDesc').show();
        }
    });
});